/*
 * @Copyright: 2017 www.yyfax.com Inc. All rights reserved.
 */
package com.yyfax.pay.order.model.to.payin;

import java.lang.reflect.Field;
import java.util.Collections;
import java.util.List;

import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;

import org.springframework.util.ReflectionUtils;

import com.google.common.collect.Lists;
import com.yyfax.pay.common.annotation.CheckSignIngore;
import com.yyfax.pay.common.model.to.YYPayParams;

/**
 * 代付下单参数
 * 
 * @author maojian
 * @date 2017-05-3 13:56:44
 * @since v1.0.0
 */
@SuppressWarnings("serial")
public class PayinOrderParams extends YYPayParams {
	@NotNull(message="serverIp不能为空")
	private String serverIp;
	@NotNull(message="merchantCode不能为空")
	private String merchantCode; // 商户编号
	@NotNull(message="userId不能为空")
	private String userId; // 商户用户ID
	@NotNull(message="orderId不能为空")
	private String orderId; // 商户订单号
	@NotNull(message="orderTime不能为空")
	private String orderTime; // 订单时间
	private String expireTime; // 过期时间
	@NotNull(message="paymentCode不能为空")
	private String paymentCode; // 支付通道编号
	@NotNull(message="payerCardNo不能为空")
	private String payerCardNo; // 付款
	@NotNull(message="payerName不能为空")
	private String payerName;
	@NotNull(message="payerName不能为空")
	@Min(value=1,message="payerName必须大于等于1")
	private Integer amount; // 金额
	@NotNull(message="certType不能为空")
	private String certType;
	@NotNull(message="certNo不能为空")
	private String certNo;
	@NotNull(message="mobile不能为空")
	private String mobile;
	@NotNull(message="notifyUrl不能为空")
	private String notifyUrl; // 异步通知url

	public String getServerIp() {
		return serverIp;
	}

	public void setServerIp(String serverIp) {
		this.serverIp = serverIp;
	}

	public String getMerchantCode() {
		return merchantCode;
	}

	public void setMerchantCode(String merchantCode) {
		this.merchantCode = merchantCode;
	}

	public String getUserId() {
		return userId;
	}

	public void setUserId(String userId) {
		this.userId = userId;
	}

	public String getOrderId() {
		return orderId;
	}

	public void setOrderId(String orderId) {
		this.orderId = orderId;
	}

	public String getOrderTime() {
		return orderTime;
	}

	public void setOrderTime(String orderTime) {
		this.orderTime = orderTime;
	}

	public String getExpireTime() {
		return expireTime;
	}

	public void setExpireTime(String expireTime) {
		this.expireTime = expireTime;
	}

	public String getPaymentCode() {
		return paymentCode;
	}

	public void setPaymentCode(String paymentCode) {
		this.paymentCode = paymentCode;
	}

	public String getPayerCardNo() {
		return payerCardNo;
	}

	public void setPayerCardNo(String payerCardNo) {
		this.payerCardNo = payerCardNo;
	}

	public String getPayerName() {
		return payerName;
	}

	public void setPayerName(String payerName) {
		this.payerName = payerName;
	}

	public Integer getAmount() {
		return amount;
	}

	public void setAmount(Integer amount) {
		this.amount = amount;
	}

	public String getNotifyUrl() {
		return notifyUrl;
	}

	public void setNotifyUrl(String notifyUrl) {
		this.notifyUrl = notifyUrl;
	}

	public String getCertType() {
		return certType;
	}

	public void setCertType(String certType) {
		this.certType = certType;
	}

	public String getCertNo() {
		return certNo;
	}

	public void setCertNo(String certNo) {
		this.certNo = certNo;
	}

	public String getMobile() {
		return mobile;
	}

	public void setMobile(String mobile) {
		this.mobile = mobile;
	}

	@Override
	public boolean validate() throws Exception {
		return true;
	}

	@Override
	public String[] signFields() {
		return new String[] { "serverIp", "merchantCode", "userId", "orderId", "orderTime", "expireTime", "paymentCode", "payerCardNo", "payerName",
				"amount", "notifyUrl" };
	}
}
